import axios from 'axios'
import { Notification as Message } from 'element-ui'

const service = axios.create({
  timeout: 15 * 1000 // request timeout
})

service.interceptors.request.use(function (config) {
  return config
}, function (error) {
  Message.error({
    title: '错误',
    message: '连接服务器失败'
  })
  return Promise.reject(error)
})

service.interceptors.response.use(function (response) {
  let data = response.data
  if (data?.code != 0) {
    Message.error({
      title: '错误',
      message: data.msg
    })
  } 
  return data
}, function (err) {
  if (err.response && err.response.data && err.response.data.msg) {
    Message.error({
      title: '提示',
      message: err.response.data.msg
    })
  } else if (err.response) {
    let msg = ''
    switch (err.response.status) {
      case 400:
        msg = '请求错误'
        break
      case 401:
        msg = '未授权，请登录'
        break
      case 403:
        msg = '拒绝访问'
        break
      case 404:
        msg = `404 未知错误`
        break
      case 408:
        msg = '请求超时'
        break
      case 500:
        msg = '服务器内部错误'
        break
      case 501:
        msg = '服务未实现'
        break
      case 502:
        msg = '网关错误'
        break
      case 503:
        msg = '服务不可用'
        break
      case 504:
        msg = '网关超时'
        break
      case 505:
        msg = 'HTTP版本不受支持'
        break
      default:
    }
    if (msg) {
      Message.error({
        title: '提示',
        message: msg
      })
      console.error(`${msg}：${err.response.config.url}`)
    }
  }
  return Promise.reject(err)
})

export default service